A typical computing environment uses computing resources belonging to individual computing hardware in order to provide services to clients. With the development of computer network technology, such a typical computing environment has evolved into a cloud computing environment. Cloud computing may provide relevant services using available computing resources distributed over a network without end-user knowledge of physical location and configuration of respective computing resources that deliver the services.
A cloud computing system may provide an on-demand outsourced service of computing resources through an information telecommunication network such as the Internet. In a cloud computing system, a service provider may virtually consolidate data centers distributed over a network to provide necessary services to end-users. In the cloud computing service, a user may not be required to buy or install computing resources including applications, storage, operating systems (OS), and/or security software, in a user equipment. Instead, a user may select and simply use virtualized computing resources whenever a user desires.
Such a cloud computing system requires rapid elasticity for commonly sharing computing resources with a plurality of users and for dynamically acquiring and releasing computing resources in response to an on-demand self service. In order to realize such a cloud computing system, virtualization has been employed. Virtualization may be a technology for creating a virtual version of computing environments such as a computing processor, an operating system, a server, a storage device, and/or network resources. That is, virtualization may enable a plurality of users to share one physical system by creating multiple independent virtual machines using computing resources of the one physical system. Through virtualization, limited computing resources can be efficiently operated and managed for a large scale data center and the utilization thereof can be maximized.
The cloud computing system may i) create a plurality of independent virtual machines using single physical computing hardware and ii) independently run an operating system and applications through each virtual machine. The virtual machine may be a virtual computing environment created with allocated hardware resources. For example, such a virtual machine may be created and managed by a hypervisor. The hypervisor may be a software program installed in a physical server. The hypervisor may control and manage running operating systems and applications through a plurality of virtual machines. The hypervisor may be referred to as a virtual machine monitor (VMM). The hypervisor may allow multiple operating systems to run concurrently on a host computer. Such multiple operation systems may be referred as guest operating systems.
Hardware resource virtualization may be classified into full-virtualization and para-virtualization. The full-virtualization may be almost complete simulation of an actual hardware to allow software to run unmodified. In the full-virtualization, a hypervisor may support a virtual machine to directly control corresponding hardware without modification of a guest operating system. The guest operating system may denote an operating system running on a virtual machine. Unlike the full-virtualization, the para-virtualization may not simulate a hardware environment. In the para-virtualization, a virtual machine cannot directly control corresponding hardware through a guest operating system. The virtual machine may request a hypervisor to control the corresponding hardware and the hypervisor may control the corresponding hardware through an optimized method. In order to indirectly control the hardware through the hypervisor, a part of a kernel of a guest operating system may be required to be modified.
In such a para-virtualization based cloud computing system, a virtual machine may perform file input/output operations through a hypervisor. During performing the file input/output operations, errors may be generated in a hypervisor level and/or a storage level. For example, errors may be generated in a network connecting the hypervisor and an associated virtual storage. Furthermore, a storage device may be temporarily unavailable to provide a related service. In this case, a file system of a guest operating system in a virtual machine may be seriously damaged or permanently corrupted.